home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / m68k / 68343ffp.arc / FFPTNORM.SA < prev    next >
Text File  |  1989-08-30  |  2KB  |  53 lines

  1.          TTL       FFP TRANSCENDENTAL NORMALIZE INTERNAL ROUTINE (FFPTNORM)
  2. FFPTNORM IDNT      1,2 FFP TRANSCENDENTAL INTERNAL NORMALIZE
  3.  
  4.          XDEF      FFPTNORM
  5.          SECTION   9
  6.  
  7. ***************************************
  8. * (C) COPYRIGHT 1981 BY MOTOROLA INC. *
  9. ***************************************
  10.  
  11. ******************************
  12. *        FFPTNORM            *
  13. * NORMALIZE BIN(29,31) VALUE *
  14. *   AND CONVERT TO FLOAT     *
  15. *                            *
  16. * INPUT: D6 - INTERNAL FIXED *
  17. * OUTPUT: D6 - FFP FLOAT     *
  18. *         CC - REFLECT VALUE *
  19. * NOTES:                     *
  20. *  1) D4 IS DESTROYED.       *
  21. *                            *
  22. * TIME: (8MHZ NO WAIT STATE) *
  23. *       ZERO  4.0 MICROSEC.  *
  24. *   AVG ELSE 17.0 MICROSEC.  *
  25. *                            *
  26. ******************************
  27.  
  28.  
  29. FFPTNORM MOVE.L    #$42,D4             SETUP INITIAL EXPONENT
  30.          TST.L     D6                  TEST FOR NON-NEGATIVE
  31.          BEQ.S     FSFRTN              RETURN IF ZERO
  32.          BPL.S     FSFPLS              BRANCH IS >= 0
  33.          NEG.L     D6                  ABSOLUTIZE INPUT
  34.          MOVE.B    #$C2,D4             SETUP INITIAL NEGATIVE EXPONENT
  35. FSFPLS   CMP.L     #$00007FFF,D6       TEST FOR A SMALL NUMBER
  36.          BHI.S     FSFCONT             BRANCH IF NOT SMALL
  37.          SWAP.W    D6                  SWAP HALVES
  38.          SUB.B     #16,D4              OFFSET BY 16 SHIFTS
  39. FSFCONT  ADD.L     D6,D6               SHIFT ANOTHER BIT
  40.          DBMI      D4,FSFCONT          SHIFT LEFT UNTIL NORMALIZED
  41.          TST.B     D6                  ? SHOULD WE ROUND UP
  42.          BPL.S     FSFNRM              NO, BRANCH ROUNDED
  43.          ADD.L     #$100,D6            ROUND UP
  44.          BCC.S     FSFNRM              BRANCH NO OVERFLOW
  45.          ROXR.L    #1,D6               ADJUST BACK FOR BIT IN 31
  46.          ADD.B     #1,D4               MAKE UP FOR LAST SHIFT RIGHT
  47. FSFNRM   MOVE.B    D4,D6               INSERT SIGN+EXPONENT
  48. FSFRTN   RTS                           RETURN TO CALLER
  49.  
  50.  
  51.          END
  52.  
  53.